package com.thx.information.service;

import com.thx.common.service.BaseManager;
import com.thx.information.dao.ColumnDao;
import com.thx.information.model.InfoColumn;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(readOnly = true)
public class ColumnService extends BaseManager<InfoColumn> {

  private static final Logger logger = LoggerFactory.getLogger(ColumnService.class);

  @Autowired
  private ColumnDao columnDao;

  /**
   * 根据企业租户id、是发布、是系统默认条件查询租户所有信息分类分页数据.
   * 
   * @param enterpriseId 所属企业租户id,不能为空
   * @param isPublic 是否发布,可以为空
   * @param columnName 分类名称,可以为空
   * @return 租户所有信息分类分页数据
   */
  public List<InfoColumn> findByEnterpriseAttributes(Long enterpriseId, String isPublic,
      String columnName) {
    return columnDao.findByEnterpriseAttributes(enterpriseId, isPublic, columnName);
  }

  /**
   * 显示左侧分类.
   * 
   * @param enterpriseId 所属企业租户id,不能为空
   * @param displayAll 是否显示所有,可以为空
   * @return 租户所有信息分类
   */
  public List<InfoColumn> queryAll(Long enterpriseId, Boolean displayAll) {
    if (displayAll) {
      return columnDao.findAllByEnterpriseAttributes(enterpriseId, "", "");
    } else {
      return columnDao.findAllByEnterpriseAttributes(enterpriseId, "1", "");
    }
  }

  /**
   * 根通栏目名称验证栏目是否存在.
   * 
   * @param columnName 栏目名称,不能为空
   * @return 名称相同的栏目数量
   */
  public int queryByName(String columnName) {
    return StringUtils.isNotBlank(columnName) && columnDao.queryByName(columnName) != null ? 1 : 0;
  }

  /**
   * 根据是否公共查询租户分类.
   * 
   * @param ifcommon 是否公共
   * @return 多条符合，返回第一条
   */
  public InfoColumn queryByIscommon(String iscommon) {
    return columnDao.queryByIscommon(iscommon);
  }

  /**
   * 查询所有.
   * 
   * @param enterpriseId 所属企业租户id,不能为空
   * @return
   */
  public List<InfoColumn> queryAll(Long enterpriseId) {
    return this.queryAll(enterpriseId, true);
  }
}
